package com.mdb.open.trade.domain.dto.trade;


/*
 * Copyright (C), 2017-2019 澳发科技(MDB)
 * FileName: TfTradeFileItemInfoService.java
 * Author:   you.yichao
 * Date:     2019-08-08
 * History:
 * <author>          <time>          <version>          <desc>
 * you.yichao         2019-08-08          V1.00             代码生成器初始生成代码
 * -----------------------------------------------------------
 * 作者姓名           修改时间           版本号            描述
 */

import com.mdb.bc.api.data.DataObjectBase;
import com.mdb.bc.validator.annotaion.validation.NotAllEmpty;
import com.mdb.bc.validator.annotaion.validation.Num;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.Digits;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

/**
 * 类描述：
 *  融资档案商品信息表数据传输类
 *
 * @author you.yichao
 * @date 2019-08-08
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(value="TradeFileItemInfoDto", description="融资档案商品信息表Dto对象")
@NotAllEmpty(selected = {"itemCnName", "itemEnName"}, message = "商品英文名称,商品中文名称至少有一项不能为空")
public class TradeFileItemInfoDto extends DataObjectBase {

    private static final long serialVersionUID = 1L;

    /**
     * 报关单号
     */
    @ApiModelProperty(value = "报关单号")
    @NotBlank(message = "报关单号不允许为空")
    @Size(max = 64, message = "报关单号最长为{max}位")
    private String customsNo;

    /**
     * 融资档案编号
     */
    @ApiModelProperty(value = "融资档案编号", hidden = true)
    private String tradeFileNo;

    /**
     * 融资档案商品编号
     */
    @ApiModelProperty(value = "融资档案商品编号", hidden = true)
    private String tradeFileItemNo;

    /**
     * 商品中文名称
     */
//    @NotBlank(message = "商品中文名称不允许为空")
    @ApiModelProperty(value = "商品中文名称")
    @Size(max = 64, message = "商品中文名称最长为{max}位")
    private String itemCnName;

    /**
     * 商品英文名称
     */
//    @NotBlank(message = "商品英文名称不允许为空")
    @ApiModelProperty(value = "商品英文名称")
    @Pattern(regexp = "^[A-Za-z0-9/\\-?:().,'+ ]+$", message = "商品英文名称仅支持字母、数字及以下字符：/ - ? : ( ) . , ' + CrLf Space")
    @Size(max = 64, message = "商品英文名称最长为{max}位")
    private String itemEnName;

    /**
     * hsCode
     */
    @ApiModelProperty(value = "hsCode")
    @NotBlank(message = "hsCode不允许为空")
    @Num(regexp = "^\\d{8,10}$", message = "hscode只能輸入8-10位阿拉伯數字")
    @Size(max = 10, message = "hsCode最长为{max}位")
    private String hsCode;

    /**
     * 品牌
     */
    @ApiModelProperty(value = "品牌")
    @Size(max = 64, message = "品牌最长为{max}位")
    private String brand;

    /**
     * 计量单位
     */
    @ApiModelProperty(value = "计量单位")
    @NotBlank(message = "计量单位不允许为空")
    @Size(max = 50, message = "计量单位最长不能超过{max}位")
    private String unit;

    /**
     * 数量
     */
    @ApiModelProperty(value = "数量")
    @NotBlank(message = "数量不允许为空")
    @Digits(integer = 9, fraction = 4, message = "数量要输入阿拉伯数字（包含小数点及小数点后四位最大14位）")
    @Num(regexp = "([1-9]\\d*+(.[0-9]{1,4})?)|(0\\.[0-9]{1,4})", message = "数量要输入阿拉伯数字（包含小数点及小数点后四位最大14位）")
    @Size(max = 14, message = "数量最长为{max}位")
    private String quantity;

//    /**
//     * 合同金额
//     */
//    @ApiModelProperty(value = "合同金额")
//    @NotBlank(message = "合同金额不允许为空")
//    @Digits(integer = 13, fraction = 2, message = "合同金額必须大于0，且整数部分最多为13位、小数部分最多为2位")
//    @Num(regexp = "([1-9]\\d*+(.[0-9]{1,2})?)|(0\\.[0-9]{1,2})", message = "合同金額必须大于0，且整数部分最多为13位、小数部分最多为2位")
//    @Size(max = 16, message = "合同金額必须大于0，且整数部分最多为13位、小数部分最多为2位")
//    private String contractAmount;
//
//    /**
//     * 合同币种
//     */
//    @ApiModelProperty(value = "合同币种")
//    @NotBlank(message = "合同币种不允许为空")
//    @Size(max = 5, message = "合同币种最长为{max}位")
//    private String contractCcy;

    /**
     * 报关单价
     */
    @ApiModelProperty(value = "报关单价")
    @NotBlank(message = "报关单价不允许为空")
    @Digits(integer = 13, fraction = 4, message = "报关单价必须大于0，且整数部分最多为13位、小数部分最多为4位")
    @Num(regexp = "([1-9]\\d*+(.[0-9]{1,4})?)|(0\\.[0-9]{1,4})", message = "报关单价必须大于0，且整数部分最多为13位、小数部分最多为4位")
    @Size(max = 18, message = "报关单价必须大于0，且整数部分最多为13位、小数部分最多为4位")
    private String customUnitAmount;

    /**
     * 报关单价币种
     */
    @ApiModelProperty(value = "报关单价币种")
    @NotBlank(message = "报关单价币种不允许为空")
    @Size(max = 5, message = "报关单价币种最长为{max}位")
    private String customUnitCcy;

    /**
     * 报关总价
     */
    @ApiModelProperty(value = "报关总价")
    @NotBlank(message = "报关总价不允许为空")
    @Digits(integer = 13, fraction = 2, message = "报关总价必须大于0，且整数部分最多为13位、小数部分最多为2位")
    @Num(regexp = "([1-9]\\d*+(.[0-9]{1,2})?)|(0\\.[0-9]{1,2})", message = "报关总价必须大于0，且整数部分最多为13位、小数部分最多为2位")
    @Size(max = 16, message = "报关总价必须大于0，且整数部分最多为13位、小数部分最多为2位")
    private String customTotalAmount;

    /**
     * 报关总价币种
     */
    @ApiModelProperty(value = "报关总价币种")
    @NotBlank(message = "报关总价币种不允许为空")
    @Size(max = 5, message = "报关总价币种最长为{max}位")
    private String customTotalCcy;

}
